package com.pizzaonline.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jdom.Element;

import com.pizzaonline.utils.Utils;
import com.pizzaonline.utils.XMLControler;

/**
 * Servlet implementation class for Servlet: AjoutMenu
 *
 */
 public class AjoutMenu extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
   //ATTRIBUTS
   private String nom;
   private String boisson;
   private String dessert;
   private String salade;
   private String pizza;
   
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public AjoutMenu() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}  	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//Mode UTF-8
		request.setCharacterEncoding("UTF-8");
		
		// Récupération des paramètres
		nom = request.getParameter("nom_menu");
		boisson = request.getParameter("boissons");
		dessert = request.getParameter("desserts");
		salade = request.getParameter("salades");
		pizza = request.getParameter("pizzas");
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
		//Test des valeurs
		if(nom.equals("")) {
			out.println("<b><font color=\"red\">Le champ nom est vide</font></b><br/>");
			out.println("<a href=\"ajoutMenu.jsp\">Recommencer</a><br/>");
			return;
		}
		
		//Formatage du nom
		nom = Utils.formattage(nom.trim());
		
		// Insertion dans le fichier XML
		insertionXML(out);
	}   
	
	// Méthode d'insertion dans le fichier XML
	private void insertionXML(PrintWriter out){
		float prixMenu = 0;
		ServletContext c = this.getServletConfig().getServletContext();
		
		try{
			System.out.println("path: "+c.getRealPath("carte.xml"));
			// Lecture du fichier XML
			XMLControler.readXMLFile("carte.xml");
			System.out.println("Lecture du fichier XML");
			
			Element menus = XMLControler.racine.getChild("Menus");
			
			// Création d'un nouvel élément Menu
			Element newMenu = new Element("Menu");
			
			newMenu.setAttribute("nom",nom);
			newMenu.setAttribute("nomPizza",pizza);
			prixMenu += XMLControler.getPrixPizza(pizza);
			
			if(boisson != null){
				newMenu.setAttribute("nomBoisson",boisson);
				prixMenu += XMLControler.getPrixBoisson(boisson);
			}
			
			if(dessert != null){
				newMenu.setAttribute("nomDessert",dessert);
				prixMenu += XMLControler.getPrixDessert(dessert);
			}
			
			if(salade != null){
				newMenu.setAttribute("nomSalade",salade);
				prixMenu += XMLControler.getPrixSalade(salade);
			}
			
			newMenu.setAttribute("prix",String.valueOf(prixMenu));
			menus.addContent(newMenu);
			
			// Sauvegarde du fichier XML
			XMLControler.saveXMLFile("carte.xml");
			out.println("<b><font color=\"green\">Insertion réussie dans le fichier XML</font></b><br/>");
			out.println("<a href=\"ajoutMenu.jsp\">Ajouter un autre menu</a><br/>");	
		}
		catch(Exception e){
			System.out.println("Erreur de lecture du fichier XML");
			out.println("<b><font color=\"red\">Erreur d'insertion dans le fichier XML</font></b><br/>");
			out.println("<a href=\"ajoutMenu.jsp\">Recommencer</a><br/>");	
			e.printStackTrace();
		}
	}
	
}